Hadoop Distributed File System (HDFS) হল Hadoop-এর একটি গুরুত্বপূর্ণ অংশ যা বড় আকারের ডেটা স্টোর এবং প্রসেস করার জন্য ব্যবহৃত হয়। HDFS-এর মাধ্যমে ডেটা অনেক বড় আকারে এবং বিভিন্ন নোডে ভাগ করে সংরক্ষণ করা হয়। ডেটা লোড করার বিভিন্ন পদ্ধতি রয়েছে, যা ব্যবহারকারীকে HDFS-এ ডেটা দ্রুত এবং কার্যকরভাবে ইনপুট করতে সাহায্য করে। নিচে HDFS-এ ডেটা লোড করার কয়েকটি সাধারণ পদ্ধতির আলোচনা করা হলো।
HDFS-এ ডেটা লোড করার পদ্ধতি
১. HDFS Command Line Interface (CLI) ব্যবহার করে ডেটা লোড করা
HDFS-এ ডেটা লোড করার সবচেয়ে সাধারণ পদ্ধতি হল Hadoop-এর কমান্ড লাইন ইন্টারফেস (CLI) ব্যবহার করা। এই পদ্ধতিতে hadoop fs -put বা hadoop fs -copyFromLocal কমান্ড ব্যবহার করে লোকাল ফাইল সিস্টেম থেকে HDFS-এ ডেটা পাঠানো হয়।
কমান্ড:
hadoop fs -put /local/path/to/file /hdfs/path/to/destination
অথবা
hadoop fs -copyFromLocal /local/path/to/file /hdfs/path/to/destination
বিবরণ:
-putবা-copyFromLocalকমান্ড ব্যবহার করে লোকাল ডিরেক্টরি বা ফাইলকে HDFS-এর নির্দিষ্ট লোকেশনে স্থানান্তর করা হয়।- এই কমান্ডের মাধ্যমে আপনি লোকাল সিস্টেমের ডেটা সহজে HDFS-এ স্থানান্তর করতে পারেন।
২. Flume ব্যবহার করে ডেটা লোড করা
Flume একটি ডেটা সংকলন সিস্টেম যা মূলত লগ ডেটা সংগ্রহ, প্রসেসিং এবং স্টোরেজের জন্য ব্যবহৃত হয়। Flume HDFS-এর সাথে সংযুক্ত হয়ে ডেটা সংগ্রহ এবং ইনপুট করতে ব্যবহৃত হয়।
বিবরণ:
Flume ব্যবহারকারীকে রিয়েল-টাইম ডেটা পরিবাহন করতে সাহায্য করে, যেমন সোশ্যাল মিডিয়া ফিড, সার্ভার লগ, বা অন্যান্য স্ট্রিমিং ডেটা। Flume সোজাসুজি HDFS-এর মধ্যে ডেটা ইনপুট করে, যেখানে এটি স্টোর করা হয়।
৩. Sqoop ব্যবহার করে ডেটা লোড করা
Sqoop একটি টুল যা সম্পর্কিত ডেটাবেস (RDBMS) থেকে Hadoop ক্লাস্টারে ডেটা ইম্পোর্ট এবং এক্সপোর্ট করার জন্য ব্যবহৃত হয়। এটি RDBMS থেকে ডেটা ইনপুট করতে এবং HDFS বা Hive-এ সংরক্ষণ করতে সক্ষম।
কমান্ড:
sqoop import --connect jdbc:mysql://localhost/dbname --table tablename --target-dir /user/hdfs/input
বিবরণ:
Sqoop RDBMS থেকে ডেটা সোজাসুজি HDFS-এর মধ্যে লোড করতে ব্যবহৃত হয়। এতে প্রাথমিকভাবে ডেটাবেসের সাথে সংযোগ স্থাপন এবং নির্দিষ্ট টেবিলের ডেটা HDFS-এ ইনপুট করা হয়।
৪. Kafka ব্যবহার করে ডেটা লোড করা
Kafka হল একটি ডিস্ট্রিবিউটেড স্ট্রিমিং প্ল্যাটফর্ম, যা রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Kafka ব্যবহার করে আপনি স্ট্রিমিং ডেটা সরাসরি HDFS-এ লোড করতে পারেন। Kafka-এর মাধ্যমে ডেটা ইনপুট করার জন্য HDFS-এর সাথে Kafka-কে ইন্টিগ্রেট করা হয়।
বিবরণ:
Kafka রিয়েল-টাইম ডেটা স্ট্রিমিংয়ের জন্য ব্যবহৃত হয়, এবং এর মাধ্যমে বড় আকারের ডেটা লোড এবং প্রসেসিং খুবই দ্রুত ও কার্যকরভাবে করা যায়। Kafka HDFS-এর সাথে সংযুক্ত হয়ে ডেটা পুশ করতে পারে।
৫. Hive ব্যবহার করে ডেটা লোড করা
Hive একটি SQL-এর মতো ইন্টারফেস প্রদান করে যা Hadoop-এর উপর ডেটা অ্যানালিটিক্স এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Hive-এ ডেটা ইনপুট করার জন্য সাধারণত LOAD DATA কমান্ড ব্যবহার করা হয়।
কমান্ড:
LOAD DATA LOCAL INPATH '/local/path/to/file' INTO TABLE tablename;
বিবরণ:
Hive LOAD DATA কমান্ড ব্যবহার করে লোকাল ফাইল বা ডিরেক্টরি থেকে ডেটা Hive টেবিল বা HDFS-এ লোড করা যায়।
ডেটা লোডের চ্যালেঞ্জ
- ডেটার আকার: বড় আকারের ডেটা লোডের সময় পারফর্মেন্স ইস্যু হতে পারে, বিশেষ করে যদি ডেটার পরিমাণ অনেক বড় হয়।
- রিপ্লিকেশন পলিসি: HDFS-এ ডেটা ইনপুট করার সময় ডেটার রিপ্লিকেশন নিশ্চিত করা প্রয়োজন, যাতে ডেটা হারানোর সম্ভাবনা থাকে না।
- ডেটা ইন্টিগ্রিটি: ডেটা লোডের সময় ডেটার ইন্টিগ্রিটি বজায় রাখা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে বড় ডেটা সেটে।
- রিয়েল-টাইম ডেটা লোড: রিয়েল-টাইম ডেটা লোড করতে Kafka বা Flume ব্যবহার করা যেতে পারে, কিন্তু এতে সিস্টেমের কার্যক্ষমতা বাড়ানোর জন্য উপযুক্ত কনফিগারেশন প্রয়োজন।
সারাংশ
HDFS-এ ডেটা লোড করার জন্য বিভিন্ন পদ্ধতি রয়েছে, যেমন HDFS CLI, Flume, Sqoop, Kafka, এবং Hive। প্রতিটি পদ্ধতি ডেটার আকার, প্রকৃতি এবং ইনপুট করার গতি অনুসারে ব্যবহৃত হয়। Flume এবং Kafka ব্যবহার করে রিয়েল-টাইম ডেটা ইনপুট করা সম্ভব, যেখানে Sqoop RDBMS থেকে ডেটা সরাসরি HDFS-এ লোড করতে ব্যবহৃত হয়। HDFS-এ ডেটা লোড করার সময় ডেটার নিরাপত্তা এবং ইন্টিগ্রিটি নিশ্চিত করতে হবে।
HDFS (Hadoop Distributed File System) হলো Hadoop এর ডিস্ট্রিবিউটেড ফাইল সিস্টেম, যা বড় পরিমাণের ডেটা সংরক্ষণ ও প্রসেসিংয়ের জন্য ব্যবহৃত হয়। HDFS এর মাধ্যমে ডেটা ক্লাস্টারের বিভিন্ন নোডে ভাগ করা হয় এবং একাধিক কপি তৈরি করা হয়, যাতে ডেটা নিরাপদ ও সহজে অ্যাক্সেসযোগ্য থাকে। HDFS এ ডেটা লোড করার সময় দুটি প্রধান পদ্ধতি রয়েছে: Local Data Loading এবং Remote Data Loading।
Local Data লোড করা
Local Data Loading মানে হচ্ছে, যখন ডেটা একটি একক মেশিন থেকে HDFS এ লোড করা হয়। সাধারণত, যখন ডেটা মেশিনের লোকাল স্টোরেজে (যেমন, কম্পিউটারের হার্ডডিস্ক) থাকে, তখন সেটি HDFS এ আপলোড করা হয়।
Local Data লোড করার পদ্ধতি
HDFS এ ফাইল আপলোড করা
HDFS এ লোকাল ডেটা লোড করার জন্য,hadoop fs -putবাhadoop fs -copyFromLocalকমান্ড ব্যবহার করা হয়। এর মাধ্যমে লোকাল মেশিন থেকে ফাইল HDFS তে কপি করা হয়।উদাহরণ:
hadoop fs -put /localpath/myfile.txt /user/hadoop/hdfspath/এখানে:
/localpath/myfile.txtহলো লোকাল ফাইলের পাথ।/user/hadoop/hdfspath/হলো HDFS তে ফাইলের গন্তব্য পাথ।
HDFS এ ডিরেক্টরি আপলোড করা
আপনি যদি একটি পূর্ণ ডিরেক্টরি আপলোড করতে চান, তাহলে একইভাবেhadoop fs -putব্যবহার করতে পারেন:উদাহরণ:
hadoop fs -put /localpath/mydir /user/hadoop/hdfspath/
Local Data লোড করার সুবিধা
- সহজ অপারেশন: লোকাল ডেটা HDFS এ লোড করা খুব সহজ এবং দ্রুত হয়, কারণ এটি একটি সিঙ্গেল মেশিন থেকে সরাসরি করা হয়।
- কম্পিউটার ফাইল সিস্টেমের সাথে সরাসরি ইন্টিগ্রেশন: লোকাল সিস্টেমের ফাইল সিস্টেমের মধ্যে সরাসরি কাজ করে, ফলে কমপ্লেক্সিটিও কম থাকে।
Remote Data লোড করা
Remote Data Loading মানে হচ্ছে, যখন ডেটা একটি দূরবর্তী (remote) সিস্টেম বা সার্ভার থেকে HDFS এ লোড করা হয়। এটি সাধারণত তখন প্রয়োজন হয় যখন ডেটা অন্য কোনো সার্ভারে বা অন্য কোনো মেশিনে থাকে এবং HDFS এ ইমপোর্ট বা মাইগ্রেট করতে হয়।
Remote Data লোড করার পদ্ধতি
- HDFS এ রিমোট ফাইল কপি করা (HTTP/FTP)
HDFS তে রিমোট ডেটা লোড করতেhadoop fs -copyFromLocalকমান্ড ব্যবহার করা যেতে পারে, তবে এটি শুধুমাত্র লোকাল ডেটার জন্য। Rsync বা SCP (Secure Copy Protocol)
যখন ডেটা একটি রিমোট সার্ভার থেকে স্থানান্তরিত হয়, তখনrsyncবাscpকমান্ড ব্যবহার করা হয়।উদাহরণ:
scp user@remotehost:/path/to/remote/file /localpath/এরপর, আপনি লোকাল ফাইলটি HDFS তে আপলোড করতে পারেন:
hadoop fs -put /localpath/file /user/hadoop/hdfspath/DistCp (Distributed Copy)
Hadoop ক্লাস্টার থেকে ক্লাস্টারে ডেটা কপি করার জন্যDistCpকমান্ড ব্যবহার করা হয়। এটি মূলত দূরবর্তী HDFS সিস্টেম থেকে ডেটা কপি করার জন্য উপযোগী।উদাহরণ:
hadoop distcp hdfs://remote-cluster/path/to/file hdfs://local-cluster/path/to/destination/
Remote Data লোড করার সুবিধা
- বৃহৎ ডেটা স্থানান্তর: রিমোট সিস্টেম বা সার্ভার থেকে বৃহৎ পরিমাণ ডেটা HDFS এ স্থানান্তর করতে
DistCpঅত্যন্ত কার্যকরী। - নিরাপত্তা: SCP বা FTP ব্যবহার করলে ডেটা নিরাপদে স্থানান্তর করা যায়, যা বিশেষত প্রযোজ্য যখন ডেটা সংবেদনশীল।
HDFS এ Data লোড করার সময় কিছু গুরুত্বপূর্ণ বিষয়
- রিপ্লিকেশন: HDFS স্বয়ংক্রিয়ভাবে ডেটার কপি তৈরি করে (যেমন, সাধারণত ৩টি কপি), যাতে ডেটা হারানো বা নষ্ট হলে তা পুনরুদ্ধার করা যায়।
- স্টোরেজ লিমিটেশন: HDFS তে খুব বড় পরিমাণের ডেটা রাখতে সক্ষম, তবে ডেটা লোড করার সময় পর্যাপ্ত স্টোরেজ থাকা উচিত।
- ফাইল আকার: HDFS এর জন্য বড় ফাইল গুলি সবচেয়ে উপযুক্ত, কারণ এটি ছোট ছোট ফাইলের সাথে কম কার্যকরী হতে পারে।
সারাংশ
HDFS এ ডেটা লোড করার জন্য Local Data এবং Remote Data দুটি প্রধান পদ্ধতি রয়েছে। Local Data লোড করার জন্য hadoop fs -put বা hadoop fs -copyFromLocal কমান্ড ব্যবহার করা হয়, যেখানে ডেটা লোকাল মেশিন থেকে সরাসরি HDFS তে পাঠানো হয়। অপরদিকে, Remote Data লোড করার জন্য scp, rsync অথবা DistCp ব্যবহার করা যেতে পারে, যেখানে রিমোট সার্ভার থেকে ডেটা HDFS তে স্থানান্তরিত হয়। HDFS এ ডেটা লোড করার প্রক্রিয়াটি স্কেলেবেল এবং ফাল্ট টলারেন্ট, যা বিশাল পরিমাণ ডেটা পরিচালনা করতে সহায়ক।
Hadoop ফ্রেমওয়ার্কের মধ্যে ডেটা স্টোর এবং প্রসেস করার জন্য HDFS (Hadoop Distributed File System) ব্যবহৃত হয়। ডেটা স্টোর করার জন্য এবং Hadoop ক্লাস্টারে ডেটা অ্যাক্সেস করার জন্য Hadoop কমান্ড লাইন টুলগুলি ব্যবহৃত হয়, বিশেষ করে put এবং get কমান্ড।
এই কমান্ডগুলো HDFS এর সাথে ডেটা ইন্টারঅ্যাকশন করতে সাহায্য করে। put কমান্ডটি লোকাল ফাইল সিস্টেম থেকে HDFS এ ডেটা আপলোড করার জন্য ব্যবহৃত হয়, এবং get কমান্ডটি HDFS থেকে ডেটা লোকাল ফাইল সিস্টেমে ডাউনলোড করার জন্য ব্যবহৃত হয়।
put কমান্ড
put কমান্ডটি লোকাল ফাইল সিস্টেম থেকে HDFS এ ডেটা স্থানান্তর করতে ব্যবহৃত হয়। এই কমান্ডটি সাধারণত ফাইল বা ডিরেক্টরি HDFS এ আপলোড করার জন্য ব্যবহার করা হয়।
put কমান্ডের সিনট্যাক্স
hadoop fs -put <লোকাল ফাইলের পথ> <HDFS ডিরেক্টরি>
উদাহরণ
ধরা যাক, আপনার লোকাল সিস্টেমে /home/user/data.txt ফাইলটি আছে এবং আপনি এটি HDFS এ /user/hadoop/input/ ডিরেক্টরিতে আপলোড করতে চান।
hadoop fs -put /home/user/data.txt /user/hadoop/input/
এটি data.txt ফাইলটি HDFS এর /user/hadoop/input/ ডিরেক্টরিতে স্থানান্তর করবে।
put কমান্ডের বিকল্প
- -f (force): যদি ফাইলটি ইতিমধ্যে HDFS এ থাকে, তবে এটি পুরনো ফাইলটি প্রতিস্থাপন করবে।
- -p: লোকাল ফাইলের পermissions (অনুমতি), মালিকানা এবং টাইমস্ট্যাম্প HDFS এ কপি করবে।
get কমান্ড
get কমান্ডটি HDFS থেকে ডেটা লোকাল ফাইল সিস্টেমে ডাউনলোড করতে ব্যবহৃত হয়। এটি সাধারণত HDFS থেকে ফাইল বা ডিরেক্টরি লোকাল সিস্টেমে স্থানান্তর করার জন্য ব্যবহৃত হয়।
get কমান্ডের সিনট্যাক্স
hadoop fs -get <HDFS ফাইলের পথ> <লোকাল ডিরেক্টরি>
উদাহরণ
ধরা যাক, আপনি HDFS থেকে /user/hadoop/input/data.txt ফাইলটি লোকাল সিস্টেমে /home/user/ ডিরেক্টরিতে ডাউনলোড করতে চান।
hadoop fs -get /user/hadoop/input/data.txt /home/user/
এটি data.txt ফাইলটি HDFS থেকে লোকাল সিস্টেমে /home/user/ ডিরেক্টরিতে স্থানান্তর করবে।
get কমান্ডের বিকল্প
- -copyToLocal: এটি
getকমান্ডের মতোই কাজ করে, কিন্তু এটি একটি নতুন কপি তৈরি করবে যদি ফাইলটি লোকাল সিস্টেমে ইতিমধ্যে থাকে। - -delete: HDFS থেকে ফাইলটি ডাউনলোড করার পর সেটি মুছে ফেলতে ব্যবহৃত হয়।
put এবং get কমান্ডের জন্য অতিরিক্ত বৈশিষ্ট্য
- ডিরেক্টরি স্থানান্তর: আপনি ফাইলের পাশাপাশি HDFS এর ডিরেক্টরি স্থানান্তর করতে পারেন।
- উদাহরণ:
hadoop fs -put /home/user/data/ /user/hadoop/input/— এটি/home/user/data/ডিরেক্টরির সমস্ত কন্টেন্ট HDFS এর/user/hadoop/input/ডিরেক্টরিতে স্থানান্তর করবে।
- উদাহরণ:
- ফাইলের তালিকা দেখা: HDFS এ কোন ফাইল বা ডিরেক্টরি আছে কিনা দেখতে
hadoop fs -lsকমান্ড ব্যবহার করতে পারেন।- উদাহরণ:
hadoop fs -ls /user/hadoop/input/— এটি HDFS এর/user/hadoop/input/ডিরেক্টরির সমস্ত ফাইল এবং সাব-ডিরেক্টরি দেখাবে।
- উদাহরণ:
- ফাইলের বিষয়বস্তু দেখানো: ফাইলের বিষয়বস্তু দেখতে
hadoop fs -catব্যবহার করা হয়।- উদাহরণ:
hadoop fs -cat /user/hadoop/input/data.txt— এটি HDFS থেকেdata.txtফাইলের বিষয়বস্তু দেখাবে।
- উদাহরণ:
সারাংশ
Hadoop এর put এবং get কমান্ডগুলি HDFS এ ডেটা স্থানান্তর করার জন্য ব্যবহৃত হয়। put কমান্ডটি লোকাল সিস্টেম থেকে HDFS এ ডেটা আপলোড করতে সাহায্য করে, এবং get কমান্ডটি HDFS থেকে ডেটা লোকাল সিস্টেমে ডাউনলোড করতে ব্যবহৃত হয়। এই কমান্ডগুলো ব্যবহার করে Hadoop ব্যবহারকারীরা সহজেই ডেটা এক্সচেঞ্জ এবং ম্যানিপুলেশন করতে পারেন।
Hadoop Distributed File System (HDFS) একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেম, যা Hadoop এর মধ্যে ডেটা সংরক্ষণ এবং প্রসেস করার জন্য ব্যবহৃত হয়। HDFS এর মধ্যে ডেটা স্টোর করার সময়, ফাইল এবং ডিরেক্টরির পермিশনস (Permissions) এবং অ্যাক্সেস কন্ট্রোল (Access Control) অত্যন্ত গুরুত্বপূর্ণ বিষয়, যাতে সঠিক ব্যবহারকারী এবং প্রোগ্রাম ডেটা অ্যাক্সেস করতে পারে।
HDFS তে ফাইল এবং ডিরেক্টরি ব্যবস্থাপনা সিস্টেমের মধ্যে তিনটি মূল কনসেপ্ট থাকে: Owner (মালিক), Group (গ্রুপ), এবং Other (অন্যান্য) ব্যবহারকারীরা। প্রতিটি ফাইল এবং ডিরেক্টরির জন্য তিনটি ধরনের পারমিশন থাকতে পারে: Read (r), Write (w), এবং Execute (x)।
HDFS File Permissions
HDFS এ ফাইল পারমিশন কাজ করে লোকাল ফাইল সিস্টেমের মতোই, তবে এখানে অতিরিক্তভাবে Owner এবং Group এর ভূমিকা থাকে। HDFS এ তিনটি প্রধান পারমিশন নির্ধারণ করা হয়:
- Read (r): ফাইল বা ডিরেক্টরির কনটেন্ট পড়ার অনুমতি।
- Write (w): ফাইল বা ডিরেক্টরির কনটেন্ট পরিবর্তন বা আপডেট করার অনুমতি।
- Execute (x): ফাইলকে রান করার অনুমতি, অথবা ডিরেক্টরি থেকে ফাইল অ্যাক্সেস করার জন্য অনুমতি।
HDFS ফাইল পারমিশন স্ট্রাকচার
HDFS এ একটি ফাইল বা ডিরেক্টরি পারমিশন স্ট্রাকচার সাধারণত এই রকম দেখায়:
-rwxr-xr-x 3 user group 4096 2024-12-16 12:00 myfile.txt
এখানে:
- প্রথম অংশ (
rwxr-xr-x) হলো ফাইলের পারমিশন, যা Owner, Group, এবং Others এর জন্য পৃথকভাবে নির্ধারিত।- প্রথম তিনটি অক্ষর (
rwx) হলো Owner এর জন্য। - পরবর্তী তিনটি অক্ষর (
r-x) হলো Group এর জন্য। - শেষ তিনটি অক্ষর (
r-x) হলো Other ব্যবহারকারীদের জন্য।
- প্রথম তিনটি অক্ষর (
- পরবর্তী তথ্য হল ফাইলের মালিক (
user), গ্রুপ (group), ফাইলের আকার, এবং মডিফাই ডেট (2024-12-16 12:00)।
HDFS File Permissions পরিবর্তন করা
HDFS এর ফাইল বা ডিরেক্টরির পারমিশন পরিবর্তন করার জন্য hadoop fs -chmod কমান্ড ব্যবহার করা হয়। এর মাধ্যমে ফাইলের অনুমতি পরিবর্তন করা যায়। এর সিনট্যাক্স:
hadoop fs -chmod <permissions> <path>
উদাহরণ
১. ফাইলের জন্য পারমিশন পরিবর্তন করা
যদি আপনি একটি ফাইলের পারমিশন পরিবর্তন করতে চান যাতে Owner এর জন্য সম্পূর্ণ পারমিশন এবং Group এবং Others এর জন্য শুধু রিড পারমিশন থাকে, তাহলে:
hadoop fs -chmod 744 /user/hadoop/myfile.txt
- এখানে
744এর মানে:- Owner:
rwx(read, write, execute) - Group:
r--(read only) - Others:
r--(read only)
- Owner:
২. ডিরেক্টরির জন্য পারমিশন পরিবর্তন করা
একটি ডিরেক্টরির পারমিশন পরিবর্তন করতে, আপনি chmod এর সাথে -R ফ্ল্যাগ ব্যবহার করে রিকর্সিভলি সব ফাইল এবং সাব-ডিরেক্টরির পারমিশন পরিবর্তন করতে পারেন:
hadoop fs -chmod -R 755 /user/hadoop/mydir
755এর মানে:- Owner:
rwx(read, write, execute) - Group:
r-x(read, execute) - Others:
r-x(read, execute)
- Owner:
HDFS এ Access Control
HDFS এ Access Control এর মাধ্যমে এটি নিশ্চিত করা হয় যে, ফাইল এবং ডিরেক্টরি শুধুমাত্র নির্দিষ্ট ব্যবহারকারী বা গ্রুপের জন্য অ্যাক্সেসযোগ্য। এটি মূলত Hadoop ACL (Access Control List) এবং Kerberos Authentication এর মাধ্যমে নিশ্চিত করা হয়।
1. Hadoop ACL (Access Control List)
HDFS তে ACL ব্যবহার করে ফাইল এবং ডিরেক্টরির বিস্তারিত পারমিশন নির্ধারণ করা যায়। ACL এ প্রতি ব্যবহারকারী বা গ্রুপের জন্য আলাদাভাবে পারমিশন সেট করা হয়।
ACL কনফিগারেশন:
hadoop fs -setfacl -m user:<username>:<permissions> <path>
উদাহরণ
আপনি যদি ফাইল myfile.txt এর জন্য একটি ব্যবহারকারীকে রিড এবং রাইট পারমিশন দিতে চান:
hadoop fs -setfacl -m user:john:rwx /user/hadoop/myfile.txt
এটি john নামক ব্যবহারকারীকে myfile.txt ফাইলে rwx (read, write, execute) পারমিশন দেবে।
2. Kerberos Authentication
HDFS এর মধ্যে উচ্চতর নিরাপত্তা নিশ্চিত করতে Kerberos Authentication ব্যবহৃত হয়। এটি একটি নেটওয়ার্ক সিকিউরিটি প্রোটোকল, যা ব্যবহারকারীদের এবং সিস্টেমের মধ্যে পরিচয় নিশ্চিত করে। Kerberos ব্যবহারকারীকে ticket-based authentication এর মাধ্যমে সিস্টেমে প্রবেশাধিকার দেয়।
- Kerberos এর মাধ্যমে Authentication:
- Kerberos ব্যবহারকারী এবং সার্ভিসের মধ্যে একটি নির্দিষ্ট এবং নিরাপদ সংযোগ তৈরি করে, যা Hadoop ক্লাস্টারে সঠিক অ্যাক্সেস কন্ট্রোল নিশ্চিত করে।
সারাংশ
HDFS তে ফাইল পারমিশন এবং অ্যাক্সেস কন্ট্রোল একটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, যা ফাইল এবং ডিরেক্টরির সুরক্ষা এবং গোপনীয়তা নিশ্চিত করতে সাহায্য করে। Owner, Group, এবং Other ব্যবহারকারীদের জন্য পারমিশন নির্ধারণ করা হয়, যাতে নির্দিষ্ট ব্যবহারকারী বা গ্রুপ শুধুমাত্র অনুমোদিত ডেটা অ্যাক্সেস করতে পারে। HDFS তে chmod কমান্ড ব্যবহার করে পারমিশন পরিবর্তন করা হয় এবং ACL বা Kerberos Authentication এর মাধ্যমে অ্যাক্সেস কন্ট্রোল ব্যবস্থা আরও শক্তিশালী করা যায়।
হাদুপের HDFS (Hadoop Distributed File System) বড় আকারের ডেটাসেটকে ছোট ছোট অংশে ভাগ (Partition) করে। এই পদ্ধতির মাধ্যমে ডেটা একাধিক নোডে (Node) সংরক্ষণ করা হয়, যা সমান্তরাল প্রক্রিয়াকরণকে (Parallel Processing) সহজ করে তোলে।
কীভাবে Data Partitioning কাজ করে?
- বিভাজন প্রক্রিয়া:
বড় ফাইল HDFS এ আপলোড করার সময়, সেটি স্বয়ংক্রিয়ভাবে ছোট ছোট অংশে বিভক্ত হয়। প্রতিটি অংশকে Block বলা হয়। - Block Size:
- ডিফল্ট ব্লক সাইজ সাধারণত 128MB বা 256MB।
- ব্লক সাইজ বড় হলে ডেটা ট্রান্সফারের সংখ্যা কমে যায় এবং প্রক্রিয়াকরণ দ্রুত হয়।
- বিভাগের উপকারিতা:
- একাধিক নোডে ব্লক ভাগ করা হয়, তাই লোড ব্যালেন্সিং (Load Balancing) সম্ভব হয়।
- ডেটা প্রক্রিয়াকরণের সময় MapReduce সমান্তরালভাবে ব্লকগুলিকে প্রক্রিয়া করে।
উদাহরণ:
যদি একটি 512MB ফাইল HDFS এ আপলোড করা হয় এবং ব্লক সাইজ 128MB হয়, তবে ফাইলটি ৪টি ব্লকে বিভক্ত হবে।
Data Replication (ডেটা প্রতিলিপি)
HDFS ডেটার নির্ভরযোগ্যতা এবং ফেইলওভার প্রতিরোধের জন্য Replication ব্যবহার করে। এক ব্লকের একাধিক অনুলিপি তৈরি করে বিভিন্ন নোডে সংরক্ষণ করা হয়।
Replication এর মূল বৈশিষ্ট্য:
- Replication Factor:
- ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল ৩।
- অর্থাৎ, প্রতিটি ব্লকের তিনটি অনুলিপি তৈরি হয়।
- Data Distribution:
- এক নোডের ডেটা যদি নষ্ট হয়ে যায় (Node Failure), অন্য নোডে সংরক্ষিত রেপ্লিকা থেকে ডেটা পুনরুদ্ধার করা হয়।
- এটি Fault Tolerance নিশ্চিত করে।
- উদাহরণ:
একটি ব্লক যদি Node A তে সংরক্ষিত হয়, তার অনুলিপি Node B এবং Node C তে সংরক্ষণ করা হবে। ফলে Node A ব্যর্থ হলে অন্য নোড থেকে ডেটা পাওয়া যাবে। - Replication এর উপকারিতা:
- Fault Tolerance: নোড ফেইল হলেও ডেটা হারানোর ঝুঁকি থাকে না।
- High Availability: ডেটার একাধিক কপি থাকায় দ্রুত পুনরুদ্ধার করা যায়।
- Load Distribution: একই ডেটার কপি একাধিক নোডে থাকায় বিভিন্ন অ্যাপ্লিকেশন লোড শেয়ার করতে পারে।
Partitioning এবং Replication এর সংযোগ
- Partitioning বড় ডেটাসেটকে ছোট ছোট ব্লকে ভাগ করে সমান্তরাল প্রক্রিয়াকরণ নিশ্চিত করে।
- Replication নিশ্চিত করে যে এই ব্লকগুলোর কপি নিরাপদে একাধিক নোডে সংরক্ষণ করা হয়েছে।
- এ দুটি পদ্ধতির সমন্বয় Hadoop HDFS কে দ্রুত, নির্ভরযোগ্য এবং Fault-Tolerant বানায়।
সারাংশ
হাদুপে Data Partitioning বড় ডেটাসেটকে ব্লক আকারে ভাগ করে সমান্তরাল প্রক্রিয়াকরণের সুযোগ দেয়, আর Replication ব্লকের একাধিক কপি সংরক্ষণ করে ডেটার নিরাপত্তা ও প্রাপ্যতা নিশ্চিত করে। এই দুটি প্রযুক্তির সমন্বয়ে HDFS বড় পরিসরের ডেটা পরিচালনার একটি কার্যকর সমাধান প্রদান করে।
Read more